{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Шаблоны промптов для работы с контентом\n",
    "\n",
    "Раздел содержит примеры по работе с контентом с помощью шаблонов промптов GigaChain.\n",
    "\n",
    "Перед работой с шаблонами инициализируйте GigaChat:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.prompts import load_prompt\n",
    "from langchain.chat_models.gigachat import GigaChat\n",
    "\n",
    "giga = GigaChat(credentials=\"<авторизационные_данные>\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "О том что такое авторизационные данные и как их получить читайте в разделе [Подключение API и получение авторизационных данных](https://developers.sber.ru/docs/ru/gigachat/api/integration)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Исправление текста\n",
    "\n",
    "Для исправления текста используйте шаблон `spell_correction.yaml`.\n",
    "\n",
    "Шаблон содержит обязательную переменную `text` — текст, который нужно исправить.\n",
    "\n",
    "Подключение и вызов шаблона:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "prompt = load_prompt(\"lc://prompts/content/spell_correction.yaml\")\n",
    "chain = prompt | giga\n",
    "chain.invoke(\n",
    "    {\n",
    "        \"text\": \"искуственый - интилектможет исправить все ошибки в даном тексте вне зависимости от длинны\"\n",
    "    }\n",
    ").content"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Перевод на русский язык\n",
    "\n",
    "Для перевода текста на русский язык используйте шаблон `translation_v2.yaml`.\n",
    "\n",
    "Для работы шаблона используется библиотека gigachat_core версии 0.1.9.1. и выше.\n",
    "Для установки библиотеки вручную используйте команду:\n",
    "\n",
    "```sh\n",
    "pip install -U gigachain_core\n",
    "```\n",
    "\n",
    "Шаблон содержит обязательную переменную `text` — текст, который нужно перевести.\n",
    "\n",
    "Подключение шаблона:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "prompt = load_prompt(\"lc://prompts/content/translation_v2.yaml\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "GigaChat поддерживает перевод с разных языков.\n",
    "\n",
    "Пример перевода с англиского языка:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "chain = prompt | giga\n",
    "chain.invoke(\n",
    "    {\n",
    "        \"text\": \"Hello! I understand English and many other languages!\"\n",
    "    }\n",
    ").content"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Пример перевода с белорусского языка:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "chain.invoke(\n",
    "    {\n",
    "        \"text\": \"Добры дзень! Я ўмею перакладаць з розных моў, напрыклад з беларускай.\"\n",
    "    }\n",
    ").content"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Стилизация текста\n",
    "\n",
    "Для переписывания текста с учетом заданного стиля используйте шаблон `text_rewrite.yaml`.\n",
    "\n",
    "Для работы шаблона используется библиотека gigachat_core версии 0.1.9.1. и выше.\n",
    "Для установки библиотеки вручную используйте команду:\n",
    "\n",
    "```sh\n",
    "pip install -U gigachain_core\n",
    "```\n",
    "\n",
    "Шаблон содержит переменные:\n",
    "\n",
    "* `text` — текст, который нужно переписать и стилизовать. Обязательная переменная;\n",
    "* `style` — стиль, в котором нужно переписать текст. Обязательная переменная.\n",
    "\n",
    "Подключение и вызов шаблона:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "prompt = load_prompt(\"lc://prompts/content/text_rewrite.yaml\")\n",
    "chain = prompt | giga\n",
    "chain.invoke(\n",
    "    {\n",
    "        \"text\": \"Благодаря новой LLM GigaChat лучше следует инструкциям и может выполнять более сложные задания: улучшилось качество суммаризации, рерайтинга и редактирования текстов, а ответы на вопросы стали точнее.\\nПо результатам тестов новый GigaChat уже превзошел схожие по количеству параметров иностранные аналоги в бенчмарке MMLU.\\nДостичь таких результатов получилось за счет множества экспериментов по улучшению модели и повышению эффективности ее обучения. В частности, команда использовала фреймворк для обучения больших языковых моделей с возможностью шардирования весов нейросети по видеокартам, что позволило сократить потребление памяти на них.\\nВ числе первых доступ к API новинки получат бизнес-клиенты Сбера и участники академического сообщества.\",\n",
    "        \"style\": \"Научная статья\"\n",
    "    }\n",
    ").content"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Генерация описания товара\n",
    "\n",
    "Для генерации рекламного описания товара, для размещения в интернет-магазине используйте шаблон `product_description.yaml`.\n",
    "\n",
    "Для работы шаблона используется библиотека gigachat_core версии 0.1.9.1. и выше.\n",
    "Для установки библиотеки вручную используйте команду:\n",
    "\n",
    "```sh\n",
    "pip install -U gigachain_core\n",
    "```\n",
    "\n",
    "Шаблон содержит переменные:\n",
    "\n",
    "* `product_name` — название товара. Обязательная переменная;\n",
    "* `category` — категория, к которой относится товар. Обязательная переменная;\n",
    "* `key_words` — от одного до пяти ключевых слов, связанных с товаром. Необязательное поле.\n",
    "\n",
    "Подключение и вызов шаблона:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "prompt = load_prompt(\"lc://prompts/content/product_description.yaml\")\n",
    "chain = prompt | giga\n",
    "chain.invoke(\n",
    "    {\n",
    "        \"product_name\": \"SberBoom\",\n",
    "        \"category\": \"умные колонки\",\n",
    "        \"key_words\": \"умная колонка, салют, умный дом\"\n",
    "    }\n",
    ").content"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Генерация таблиц\n",
    "\n",
    "Для генерации таблиц используйте шаблон `table_generation.yaml`.\n",
    "\n",
    "Для работы шаблона используется библиотека gigachat_core версии 0.1.9.1. и выше.\n",
    "Для установки библиотеки вручную используйте команду:\n",
    "\n",
    "```sh\n",
    "pip install -U gigachain_core\n",
    "```\n",
    "\n",
    "Шаблон содержит обязательную переменную `text` — описание таблицы, которую надо сгенерировать.\n",
    "\n",
    "Подключение и вызов шаблона:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain.prompts import load_prompt\n",
    "from langchain.chat_models.gigachat import GigaChat\n",
    "\n",
    "giga = GigaChat(credentials=\"<авторизационные_данные>\", model=\"GigaChat-Pro\")\n",
    "\n",
    "prompt = load_prompt(\"lc://prompts/content/table_generation.yaml\")\n",
    "chain = prompt | giga\n",
    "chain.invoke(\n",
    "    {\n",
    "        \"text\": \"Столбцы: Предмет мебели, Краткое описание. В обычной квартире могут быть представлены самые разные предметы мебели. Например столы, стулья или кресла. Стол — предмет мебели, имеющий приподнятую горизонтальную или наклонную поверхность и предназначенный для размещения предметов, выполнения работ, принятия пищи, игр, рисования, обучения и другой деятельности. Стул — редмет мебели для сидения одного человека, с опорой для спины с подлокотниками или без них. Кресло — предмет мебели для комфортного продолжительного сидения, со спинкой, c подлокотниками или без них.\"\n",
    "    }\n",
    ").content"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.0.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
